==================--==--====+*%%%%%%%%%%@@@@@@%%%%%%%%@%%%%%%%%%%%%%%
+========++===+++++++++++**##%%%%%%%%%%%@@@%%%@@@%%@@@%%%%%%%%%%%%%%%
+++++++++++++++++****#################%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%
**+++***###********+****##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*+*****+**********#***#********#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#*******************##***#*####*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###************##***************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****#**######*******+*+**+==+**###**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************+=++*****##########%%%%%%%%%%%%%%%%%%%%%%%%%
****###**#***#************+***********#########%%%%%%%%%%%%%%%%%%%%%%
**########*##########*****#*****************#####%%%%%%#####%%%%%%%%%
##*######*#######**#############################%%%%%####**+*#######%
##%%%%%####%%%%%###%%%%###%%%%############################**++#######
#####*********##****############**###########*##%%%%########**#######
#**##******************###########**##############%%%%%%%%%##########
#################################%%%###%%%######**####%%%%########%%%
%%###%%###%%%%%%%%%%%###%%%%%%####%%###%##%%%%%#*+*##########%%%%%%%%
%###%%##%%%%%%%%%%%%%%%%%%%%%%%%%#%###%###*#%%##*+%%%%%##%%%%%%%%%%%%
###%%##%%%%%%%%%%%%%%%%#%%%%%%%%%%#####%%%%%#%#*+*%%%%%%%%%%%%%%%%%%%
##%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%##***#%##**#%%%%%%%%%%%%%%%%%%
##%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%#######***#%#*##*%%%%@%%%%%%%%%%%%
##%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%######****%#####%%%%%%%%%%%%%%%%
%%%%%%%@@@@@@@@@%%%%%@@@@%%%@@@@@@@@@%%%%%%%%%#%@@%%%@@@@@@@@@@@@@@@@